/*
 * Copyright © 2016-2018 European Support Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { default as ItemsHelper } from 'sdc-app/common/helpers/ItemsHelper.js';
import {
    itemType,
    versionStatus
} from 'sdc-app/common/helpers/ItemsHelperConstants.js';
import { actionTypes } from './FilterConstants.js';

const FilterActionHelper = {
    async updateFilteredItems(dispatch, filter) {
        let permission = { ...filter.permission };
        if (
            filter.versionStatus === versionStatus.DRAFT &&
            !permission.Owner &&
            !permission.Contributor
        ) {
            permission.Owner = true;
            permission.Contributor = true;
        }
        const items = await ItemsHelper.fetchItems({
            ...filter,
            permission
        });
        let vspList = [];
        let vlmList = [];
        items.results.map(item => {
            if (item.type === itemType.VSP) {
                const { properties, ...all } = item;
                vspList.push({ ...all, ...properties });
            } else {
                vlmList.push(item);
            }
        });

        dispatch({
            type: actionTypes.UPDATE_FILTERED_LIST,
            data: {
                vspList,
                vlmList
            }
        });
    }
};

export default FilterActionHelper;
